-
TCP/IP 는 도청이 가능한 네트워크이다.
HTTP는 TCP/IP 기반의 통신 프로토콜이다. TCP/IP는 데이터를 평문으로 주고받는 네트워크이기 때문에 통신 경로상의 패킷을 수집하는 것만으로도 수동적 도청이 될 수 있다
해결방안
- SSL또는 TLS 계층으로 통신 자체를 암호화하여 해결할 수 있다.
- HTTP 메시지에 포함된 내용만 암호화하여 해결할 수 있다. (데이터를 전달받은 측에서 복호화처리가 필요)
-
HTTP는 통신 상대를 확인하지 못한다
HTTP 통신은 현재 request를 보낸 상대를 식별하지 못하기 때문에 위장에 취약하다.
- request를 보낸 상대가 접근이 허가된 상대인지 확인할 수 없다
- 서버는 의미 없는 request에도 response를 보내야 하기 때문에 DoS 공격에 취약하다
해결방안
-
SSL을 사용한다.
SSL은 클라이언트를 확인하고 서버의 안전성을 나타내는 수단으로 CA 인증서를 사용한다.
- CA 인증서로 서버에게 클라이언트의 실재함을 증명할 수 있다.
- CA 인증서로 클라이언트에게 서버의 안전성을 나타낼 수 있다
-
정보의 완전성을 증명할 수 없다
완전성이란 정보의 정확성(수신한 데이터가 송신측에서 보낸 원본 데이터와 일치하는 지)을 의미한다.
- HTTP는 정보의 완전성을 증명하지 못하기 때문에 데이터가 변조되었는지 확인할 수 없다 (중간자 공격에 취약하다)
해결방안
-
SSL을 사용한다.
인증, 암호화, Digest 기능을 제공하는 SSL을 HTTP와 함께 사용해야 한다.
SSL(Secure Socket Layer)는 웹 사이트와 웹 브라우저 또는 두 서버간의 통신을 암호화하는 계층이다.
- OSI 7계층 ~ 4계층 사이에서 동작하기 때문에 TCP 기반의 모든 어플리케이션에서 SSL이 적용된다
- CA 인증서를 통해 클라이언트와 서버간의 통신을 보증해준다. (서버에게 클라이언트의 실재함을 증명, 클라이언트에게 서버의 안정성을 증명)
- 클라이언트와 서버가 주고받는 데이터는
대칭키 암호화 방식
으로 암호화한다. 대칭키는비대칭키 암호화 방식
으로 전달된다.
HTTP 프로토콜의 소켓 통신 계층을 SSL/TLS으로 대체한 프로토콜이다
HTTPS ⇆ SSL ⇆ TCP
: HTTP는 TCP와 직접 통신하지만, HTTPS는 SSL를 거쳐 TCP와 통신한다.
-
기밀성을 보장하는 통신 프로토콜이다
- 공공 매체에서 두 사용자 간의 통신을 보호한다
-
무결성을 보장하는 통신 프로토콜이다
- SSL의 암호화 방식으로 정보의 변조를 방지한다
-
인증이 가능한 통신 프로토콜이다
- CA 인증서를 통해 클라이언트의 실재함을 서버의 안정성을 확인할 수 있다
-
HTTPS를 사용하는 사이트는 검색 엔진 최적화(SEO)가 된다
- 대표적인 검색 엔진(구글, 네이버)에서 동일 키워드를 포함한 사이트들 가운데 HTTPS 기반의 사이트를 상위 노출해준다
-
AMP(가속화된 모바일 페이지)를 사용하기 위해서 HTTPS를 사용해야 한다
- 구글이 개발한 AMP(Accelerate Mobile Pages)는 모바일 기기에서 HTML의 불필요한 부분을 없애 빠른 로딩을 가능하게 하는 기술이다.
-
HTTP/2.0에서는 HTTP보다 HTTPS가 빠르다
(참고, 참고2)- 사실 HTTP보다 HTTPS가 느린것은 당연하다. 중간에 핸드셰이크와 데이터 암복호화가 이루어져있기 때문이다.
- 하지만 HTTP/2.0은 멀티 플렉싱, 동시 처리, 헤더 압축, server push 및 stream dependency의 기능을 수행할 수 있기 때문에 ...